Tarea 03 / Josel Vargas Calderón y Valentina Rodriguez Fallas
Objetivo
El presente repositorio contiene los disntintos procedimientos que se requieren para obtener una adecuada georreferenciación de bases de datos y la elaboración de mapas y tablas dinámicas e interaactivas.
El objetivo de la tarea 3 es aplicar los conocimientos de los contenidos corresposdientes:
Desarrollar programas en el lenguaje R y documentos en el sistema de publicación científica y técnica Quarto.
Implementar tablas, gráficos y mapas con las bibliotecas DT, ggplot2, plotly y sf.
Publicar resultados en la Web, junto con el código y los datos que los generan.
Se analizaran un dataset de avistamiento de felinos descargado de la base de datos de Global Biodiversity Information Facility, s edescaragarán capas desde el SNIT y de WorldClim. Se crearán tablas por medio de consultas en R, se generarán mapas y gráficos.
Se cargan las librerias a ser utilizadas y se coloca el directorio por defecto.
Code
# Cargamos libreriaslibrary(tidyverse)library(plotly)library(sf)library(DT)library(leaflet)library(terra)library(leaflet.extras)library(leafem)library(raster)library(rgdal)#set working directorysetwd("~/UCR/maestria/II Semestre 2022/progra/tarea3")
2. Carga de CSV
Code
# caragmos felinosfelinos <-st_read("C:/Users/josel/Downloads/felinos.csv",options =c("X_POSSIBLE_NAMES=decimalLongitude", # columna de longitud decimal"Y_POSSIBLE_NAMES=decimalLatitude"# columna de latitud decimal ),quiet =TRUE )
3. Pregunta 1
Primero Se procede con la selección de columnas interesadas, luego se genera la tabla interactiva del paquete DT
Code
## Filtramos columnas que requerimos y lo guardamos como un objetotabla_felinos <-subset (felinos, select =c(species, stateProvince, locality, eventDate))# Tabla interativa de Felinostabla_felinos |>datatable(options =list(pageLength =5,language =list(url ='//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json') ))
4. Pregunta 2
Primero se vuelve a cargar el dataset de felino, pero esta vez usando la libreria de tidyverse. Esto se realiza para no tener problemas a la hora de graficar, debido a que el paquete que usamos para graficar viene del mismo paquete. Este dataset se carga con el nombre de “felinos2”. Luego se preocede a la graficación
Code
# VOLVEMOS A CARGAR FELINOS, PERO ESTA VEZ USANDO LA paquete DE TIDYVERSEfelinos2 <-read_csv("felinos2.csv")# Gráfico de barras apiladas por especie en cada mesgrafico_barras_felinos <- felinos2 |>ggplot(aes(x = month, fill = species, na.rm =TRUE)) +geom_bar() +scale_x_continuous(breaks =c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)) +ggtitle("Cantidad de registros por especie en cada mes") +xlab("Mes") +ylab("Cantidad") +labs(fill ="Especie") +theme_classic() +theme(legend.position ="top")# Gráfico de barras plotlyggplotly(grafico_barras_felinos) |>config(locale ='es')
5. Pregunta 3
En la pregunta 3, primero cargamos el shape de provincias. Este tiene como origen el SNIT. Segundo cargamos el raster de altitud. A “Felinos” y “Provincias” se le asigna la proyección del sistema de coordenadas planas. Por ultimo creamos una paleta de colores.
5.1 Procesamos la data
Code
#cargamos Shape de provinciasprovincias <-st_read("C:/Users/josel/OneDrive/Documentos/ATLAS2014_CRTM05/Provincias2014crtm05/Provincias2014crtm05.shp",quiet =TRUE# para evitar el despliegue de mensajes )#Caragmos raster de altitudaltitud <-rast("altitud.tif" )# Asignación de un CRS al objeto felinosst_crs(felinos) <-4326# Transformación del CRS del objeto provincias a WGS84 (EPSG = 4326)provincias <- provincias |>st_transform(4326)# Paleta de colores de altitud de Costa Ricacolores_altitud <-colorNumeric(topo.colors(25),values(altitud),na.color ="transparent")
5.2 Ahora, si mapaeamos
Code
#Procedemos a Mapearleaflet() |>setView(# centro y nivel inicial de acercamientolng =-84.19452,lat =9.572735,zoom =7) |>addTiles(group ="OpenStreetMap") |># capa base de OSM |>addRasterImage( # capa rasterraster(altitud), # conversión de SpatRaster a RasterLayer colors = colores_altitud, # paleta de coloresopacity =0.6,group ="Altitud", ) |>addLegend(title ="Altitud",values =values(altitud),pal = colores_altitud,position ="bottomleft",group ="Altitud" ) |>addProviderTiles(providers$Stamen, group ="Stamen") |>addProviderTiles(providers$Esri.NatGeoWorldMap, group ="Esri.NatGeoWorldMap" ) |>addPolygons(# capa de provincias (polígonos)data = provincias,color ="black",fillColor ="transparent",stroke =TRUE,weight =1.0,group ="Provincias",popup =paste(paste0("<strong>Provincia: </strong>", provincias$PROVINCIA),sep ='<br/>' )) |>addCircleMarkers(# capa de registros de presencia (puntos)data = felinos,stroke = F,radius =4,fillColor ='Black',fillOpacity =1,group ="Felinos",popup =paste(paste0("<strong>Especie: </strong>", felinos$species),paste0("<strong>Localidad: </strong>", felinos$locality),paste0("<strong>Fecha: </strong>", felinos$eventDate),paste0("<strong>Fuente: </strong>", felinos$institutionCode),paste0("<a href='", felinos$occurrenceID, "'>Más información</a>"),sep ='<br/>' ) ) |>addLayersControl(baseGroups =c("OpenStreetMap", "Stamen", "Esri.NatGeoWorldMap"),overlayGroups =c("Altitud","Provincias", "Felinos")) |># control de capasaddResetMapButton() |># botón de reinicioaddSearchOSM() |># búsqueda en OSMaddMouseCoordinates() |># coordenadas del puntero del ratónaddScaleBar(position ="bottomleft", options =scaleBarOptions(imperial =FALSE)) |># barra de escalaaddMiniMap(position ="bottomleft") # mapa de ubicación